
CXX = g++
AR = ar
CXXFLAGS = -std=c++11 -Wall
ARFLAGS = rcs
INC = -I./include
LIB = -L./lib -lphys_engine -lphys_solve_math -leasyx
TARGET = physics_engine_main-1.0.exe
BUILD_DIR = build
LIB_DIR = lib
SRC_DIR = src
INC_DIR = include


$(TARGET): $(SRC_DIR)/main.cpp $(SRC_DIR)/phys_user_method.cpp $(LIB_DIR)/libphys_engine.a $(LIB_DIR)/libphys_solve_math.a | $(LIB_DIR) $(BUILD_DIR)
	$(CXX) $(SRC_DIR)/main.cpp $(SRC_DIR)/phys_user_method.cpp $(CXXFLAGS) $(INC) $(LIB) -o $@



$(LIB_DIR)/libphys_engine.a: $(SRC_DIR)/phys_engine.cpp | $(LIB_DIR) $(BUILD_DIR)
	$(CXX) -c $< $(CXXFLAGS) $(INC) -o $(BUILD_DIR)/phys_engine.o
	$(AR) $(ARFLAGS) $@ $(BUILD_DIR)/phys_engine.o

$(LIB_DIR)/libphys_solve_math.a: $(SRC_DIR)/phys_solve_math.cpp | $(LIB_DIR) $(BUILD_DIR)
	$(CXX) -c $< $(CXXFLAGS) $(INC) -o $(BUILD_DIR)/phys_solve_math.o
	$(AR) $(ARFLAGS) $@ $(BUILD_DIR)/phys_solve_math.o

$(LIB_DIR):
	@mkdir -p $@

$(BUILD_DIR):
	@mkdir -p $@

clean:
	rm -rf $(BUILD_DIR)/*.o $(LIB_DIR)/*.a

.PHONY: clean